]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Handle workspaces going empty due to windows changing monitors
authorAlexander Larsson <alexl@redhat.com>
Wed, 16 Mar 2011 10:37:08 +0000 (11:37 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 17 Mar 2011 13:13:55 +0000 (14:13 +0100)
If a workspace becomes empty due to a window changing to/from the
primary monitor, but not changing its original workspace then we
were not noticing this. This can happen for instance if you drag
a thumbnail window to a non-primary window.

https://bugzilla.gnome.org/show_bug.cgi?id=609258

js/ui/main.js

index 2b4c20f46643f95bd53e25c4eb2130b97922e8a1..b5589978d75800a16b84ec276c483f6b83a0e4ca 100644 (file)
@@ -219,6 +219,10 @@ function start() {
     }
 
     global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
+
+    global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
+    global.screen.connect('window-left-monitor', _windowLeftMonitor);
+
     Mainloop.idle_add(_nWorkspacesChanged);
 }
 
@@ -306,6 +310,20 @@ function _windowRemoved(workspace, window) {
     });
 }
 
+function _windowLeftMonitor(metaScreen, monitorIndex, metaWin) {
+    // If the window left the primary monitor, that
+    // might make that workspace empty
+    if (monitorIndex == global.get_primary_monitor_index())
+        _queueCheckWorkspaces();
+}
+
+function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) {
+    // If the window entered the primary monitor, that
+    // might make that workspace non-empty
+    if (monitorIndex == global.get_primary_monitor_index())
+        _queueCheckWorkspaces();
+}
+
 function _queueCheckWorkspaces() {
     if (_checkWorkspacesId == 0)
         _checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);